package com.itheima.hw.test02;

import cn.hutool.core.io.FileUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 文件拷贝：
 *      c://imgs  (文件夹 + 文件)
 *      d://imgs
 */
public class Test {

    /**
     * 拷贝文件夹
     * @param srcDir 源文件夹
     * @param destDir 目标文件夹
     */
    public static void copyDir(String srcDir,String destDir){
        //1.创建目标文件夹（拷贝文件夹）
        File destDirFile = new File(destDir);
        destDirFile.mkdirs();

        //2.获取源文件夹下的所有文件
        File srcDirFile = new File(srcDir);
        File[] files = srcDirFile.listFiles();

        //3.判断文件类型
        if(files != null && files.length > 0){
            for (File file : files) {

                String destFilePath = destDir + "\\" + file.getName(); //拼接目标文件/目录路径


                if(file.isFile()){
                    //3.1 如果是文件，直接拷贝到目标文件夹中
                    try(
                            FileInputStream fis = new FileInputStream(file);
                            FileOutputStream fos = new FileOutputStream(new File(destFilePath));
                            ){
                        System.out.println("正在拷贝文件：" + file.getName());
                        byte[] cars = new byte[1024];
                        int len;
                        while((len = fis.read(cars)) != -1){
                            fos.write(cars,0,len);
                        }

                    }catch (Exception e){
                        e.printStackTrace();
                    }

                }else {
                    System.out.println("正在拷贝文件目录：" + destFilePath);
                    //3.2 如果是文件夹，递归拷贝
                    copyDir(file.getAbsolutePath(),destFilePath);
                }

            }
        }

    }

    public static void main(String[] args) {
        copyDir("D:\\imgs", "E:\\imgs");
    }

}




















